package com.zhhh.service;

import java.io.File;
import java.io.IOException;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ClassUtils;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import com.zhhh.domain.FilePath;
import com.zhhh.repository.FilePathRepository;
import com.zhhh.utils.DocConverter;
import com.zhhh.utils.FileUtil;

@Service
public class FilePathService {

	@Autowired
	private FilePathRepository filePathRepository;

	public boolean Upload(@RequestParam("file") MultipartFile file) {
		if (!file.isEmpty()) {
			// 获取文件名称,包含后缀
			String fileName = file.getOriginalFilename();

			// 存放在这个路径下：该路径是该工程目录下的static文件下：(注：该文件可能需要自己创建)
			// 放在static下的原因是，存放的是静态文件资源，即通过浏览器输入本地服务器地址，加文件名时是可以访问到的
			String path = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "static/";
			System.out.println(path);
			try {
				// 该方法是对文件写入的封装，在util类中，导入该包即可使用，后面会给出方法
				FileUtil.fileupload(file.getBytes(), path, fileName);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			DocConverter d = new DocConverter(path + fileName);
			// 调用conver方法开始转换，先执行doc2pdf()将office文件转换为pdf;再执行pdf2swf()将pdf转换为swf;
			if (!d.conver()) {
				//转换失败删除文件
				File targetfile = new File(path + fileName);
				File pdffile = new File(path + fileName.substring(0, fileName.lastIndexOf(".")) + ".pdf");
				targetfile.delete();
				pdffile.delete();
				return false;
			}

			// 接着创建对应的实体类，将以下路径进行添加，然后通过数据库操作方法写入
			FilePath biaopath = new FilePath();
			System.out.println(fileName);
			biaopath.setFileName(fileName);
			biaopath.setPath("http://localhost:8080/" + fileName);
			biaopath.setPdfPath("http://localhost:8080/" + fileName.substring(0, fileName.lastIndexOf(".")) + ".pdf");
			filePathRepository.save(biaopath);
			return true;
		} else {
			return false;
		}
	}
}
